package org.mokusakura.persistence.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.mokusakura.domain.History;
import org.springframework.lang.Nullable;

import java.sql.Timestamp;
import java.util.List;

@Mapper
public interface HistoryMapper {
    /**
     * <p>未实现 </p>
     *
     * @param userId-查询的用户Id
     * @param beginTimestamp-开始时间，可空则视为从最早开始找
     * @param endTimestamp-结束时间，可空，则视为找到最后
     * @return History历史
     */
    List<History> getUserHistoryByEmailAndDate(Integer userId, @Nullable Timestamp beginTimestamp,
                                               @Nullable Timestamp endTimestamp);

    /**
     * <p>向history插入一条记录，表明用户访问了某个category页面 </p>
     *
     * @param userId     - 待插入的用户id
     * @param categoryId - 待插入的category id
     * @param timestamp  - 用户访问的时间
     * @return 1或0
     */
    Integer insertUserHistory(Integer userId, String categoryId, Timestamp timestamp);

    /**
     * <p>向itemhistory表插入一条记录，表明用户访问了某个item页面 </p>
     *
     * @param userId    - 待插入的用户id
     * @param itemId    - 待插入的item id
     * @param timestamp - 用户访问的时间
     * @return 1或0
     */
    Integer insertUserItemHistory(Integer userId, String itemId, Timestamp timestamp);

    /**
     * <p>向producthistory表插入一条记录，表明用户访问了某个product页面 </p>
     *
     * @param userId    - 待插入的用户id
     * @param productId - 带插入的product id
     * @param timestamp - 用户访问的时间
     * @return 1或0
     */
    Integer insertUserProductHistory(Integer userId, String productId, Timestamp timestamp);


}